popover: Drop ::relative-to
authorMatthias Clasen <mclasen@redhat.com>
Mon, 24 Feb 2020 12:21:46 +0000 (07:21 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 25 Feb 2020 01:46:41 +0000 (20:46 -0500)
It is enough to just set the parent (and make the parent
call gtk_native_check_resize in size_allocate).

This commit removes the relative_to argument to the
constructors of GtkPopover and GtkPopoverMenu, and
updates all callers.

51 files changed:
demos/gtk-demo/application.c
demos/gtk-demo/clipboard.c
demos/gtk-demo/dnd.c
demos/gtk-demo/fishbowl.c
demos/gtk-demo/popover.c
demos/gtk-demo/sliding_puzzle.c
demos/widget-factory/widget-factory.c
docs/reference/gtk/gtk4-sections.txt
docs/tools/widgets.c
gtk/a11y/gtkpopoveraccessible.c
gtk/gtkcolorswatch.c
gtk/gtkemojichooser.c
gtk/gtkemojicompletion.c
gtk/gtkentrycompletion.c
gtk/gtkfilechooserwidget.c
gtk/gtklabel.c
gtk/gtklinkbutton.c
gtk/gtkmenubutton.c
gtk/gtkmenusectionbox.c
gtk/gtkmodelbutton.c
gtk/gtkmountoperation.c
gtk/gtknotebook.c
gtk/gtkplacessidebar.c
gtk/gtkplacesview.c
gtk/gtkpopover.c
gtk/gtkpopover.h
gtk/gtkpopovermenu.c
gtk/gtkpopovermenu.h
gtk/gtkpopovermenubar.c
gtk/gtkpopovermenuprivate.h
gtk/gtkscalebutton.c
gtk/gtkshortcutswindow.c
gtk/gtktext.c
gtk/gtktextview.c
gtk/gtktreeview.c
gtk/gtkwindow.c
gtk/inspector/css-node-tree.c
gtk/inspector/prop-editor.c
gtk/inspector/recorder.c
gtk/ui/gtkcombobox.ui
gtk/ui/gtkplacesview.ui
tests/gdkgears.c
tests/testdnd2.c
tests/testgaction.c
tests/testiconview.c
tests/testpopover.c
tests/testscrolledwindow.c
tests/testtooltips.c
testsuite/a11y/misc.c
testsuite/gtk/builder.c
testsuite/gtk/popover.c

index 783966dfd880e58ad2b519a72b863a682b2f57aa..d556e6d3ca1676afe49030e90f824ab8c35c15c5 100644 (file)
@@ -428,7 +428,7 @@ demo_application_window_init (DemoApplicationWindow *window)
 
   gtk_widget_init_template (GTK_WIDGET (window));
 
-  popover = gtk_popover_menu_new_from_model (window->menubutton, window->toolmenu);
+  popover = gtk_popover_menu_new_from_model (window->toolmenu);
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (window->menubutton), popover);
 
   g_action_map_add_action_entries (G_ACTION_MAP (window),
index 68e9695619f6733936fbcf773ac37776ee6d2556..525c81e2c28e8ae4cae502fec986c5d33bf8b676 100644 (file)
@@ -248,7 +248,8 @@ pressed_cb (GtkGesture *gesture,
   item = g_menu_item_new (_("_Paste"), "clipboard.paste");
   g_menu_append_item (menu, item);
 
-  popover = gtk_popover_menu_new_from_model (image, G_MENU_MODEL (menu));
+  popover = gtk_popover_menu_new_from_model (G_MENU_MODEL (menu));
+  gtk_widget_set_parent (popover, image);
 
   gtk_popover_set_pointing_to (GTK_POPOVER (popover), &(GdkRectangle) { x, y, 1, 1});
   gtk_popover_popup (GTK_POPOVER (popover));
index bf82ccf37a1aa901350a7dbaa189a63a3ff4a748..df7c917bc80a52719a61416aadc1e86768a99a18 100644 (file)
@@ -271,7 +271,8 @@ pressed_cb (GtkGesture *gesture,
       pos_x = x;
       pos_y = y;
 
-      menu = gtk_popover_new (widget);
+      menu = gtk_popover_new ();
+      gtk_widget_set_parent (menu, widget);
       gtk_popover_set_has_arrow (GTK_POPOVER (menu), FALSE);
       gtk_popover_set_pointing_to (GTK_POPOVER (menu), &(GdkRectangle){ x, y, 1, 1});
       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
index 36e45a77bf2e66b22fdf4bd3800e845e04d7e7fc..81a78b74b45bfc358094da46e979c2eb172e9cd7 100644 (file)
@@ -158,7 +158,7 @@ static GtkWidget *
 create_menu_button (void)
 {
   GtkWidget *w = gtk_menu_button_new ();
-  GtkWidget *popover = gtk_popover_new (NULL);
+  GtkWidget *popover = gtk_popover_new ();
 
   gtk_container_add (GTK_CONTAINER (popover), gtk_button_new_with_label ("Hey!"));
   gtk_popover_set_autohide (GTK_POPOVER (popover), FALSE);
index 2d5c44cf595d65f39b8f2a3585a33dbbdab11dcb..d8e04596a78c1980399891306b0f98db2699b563 100644 (file)
@@ -22,7 +22,8 @@ create_popover (GtkWidget       *parent,
 {
   GtkWidget *popover;
 
-  popover = gtk_popover_new (parent);
+  popover = gtk_popover_new ();
+  gtk_widget_set_parent (popover, parent);
   gtk_popover_set_position (GTK_POPOVER (popover), pos);
   gtk_container_add (GTK_CONTAINER (popover), child);
   g_object_set (child, "margin", 6, NULL);
index 95cc9dc07370fc000e4064c906c6ad472e1670af..136c65ccfd5a688dd98172a6873a4df5012084bb 100644 (file)
@@ -448,7 +448,7 @@ do_sliding_puzzle (GtkWidget *do_widget)
       gtk_grid_attach (GTK_GRID (tweaks), apply, 1, 2, 1, 1);
       g_signal_connect (apply, "clicked", G_CALLBACK (reconfigure), NULL);
 
-      popover = gtk_popover_new (NULL);
+      popover = gtk_popover_new ();
       gtk_container_add (GTK_CONTAINER (popover), tweaks);
 
       tweak = gtk_menu_button_new ();
index bbf10e8a5d5d977c27286c8ecc79245a13f2d430..2d55e91132c32cfe39c0c3369942169be8ddaa8c 100644 (file)
@@ -1630,9 +1630,10 @@ static void
 set_up_context_popover (GtkWidget *widget,
                         GMenuModel *model)
 {
-  GtkWidget *popover = gtk_popover_menu_new_from_model (widget, model);
+  GtkWidget *popover = gtk_popover_menu_new_from_model (model);
   GtkGesture *gesture;
 
+  gtk_widget_set_parent (popover, widget);
   gtk_popover_set_has_arrow (GTK_POPOVER (popover), FALSE);
   gesture = gtk_gesture_click_new ();
   gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (gesture), GDK_BUTTON_SECONDARY);
index d186f6ffb92155645296c2b13c4b0906fcbb1770..01896851a3221c755a8e2fcb65936e0c66625a3f 100644 (file)
@@ -5881,8 +5881,6 @@ GtkPopover
 gtk_popover_new
 gtk_popover_popup
 gtk_popover_popdown
-gtk_popover_set_relative_to
-gtk_popover_get_relative_to
 gtk_popover_set_pointing_to
 gtk_popover_get_pointing_to
 gtk_popover_set_position
index 0dd0cda76f42ee18d7522c23ce46c6c890b5cb63..6cf982f25dea7c3a98a60e4774df9d81ff4b93e0 100644 (file)
@@ -152,7 +152,7 @@ create_menu_button (void)
   image = gtk_image_new ();
   gtk_image_set_from_icon_name (GTK_IMAGE (image), "emblem-system-symbolic");
   gtk_container_add (GTK_CONTAINER (widget), image);
-  menu = gtk_popover_new (NULL);
+  menu = gtk_popover_new ();
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (widget), menu);
 
   vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3);
index 4b51139c050904a631232804cb2a0370a1982ea3..6e73a34a47c1baf724a0072eb5c7a7569a921d48 100644 (file)
@@ -27,56 +27,11 @@ typedef struct _GtkPopoverAccessiblePrivate GtkPopoverAccessiblePrivate;
 
 struct _GtkPopoverAccessiblePrivate
 {
-  GtkWidget *widget;
 };
 
 G_DEFINE_TYPE_WITH_CODE (GtkPopoverAccessible, gtk_popover_accessible, GTK_TYPE_CONTAINER_ACCESSIBLE,
                          G_ADD_PRIVATE (GtkPopoverAccessible))
 
-static void
-popover_update_relative_to (AtkObject  *obj,
-                            GtkPopover *popover)
-{
-  GtkPopoverAccessiblePrivate *priv;
-  AtkObject *widget_accessible;
-  GtkWidget *widget;
-
-  priv = gtk_popover_accessible_get_instance_private (GTK_POPOVER_ACCESSIBLE (obj));
-  widget = gtk_popover_get_relative_to (popover);
-
-  if (priv->widget == widget)
-    return;
-
-  if (priv->widget)
-    {
-      g_object_remove_weak_pointer (G_OBJECT (priv->widget),
-                                    (gpointer*) &priv->widget);
-      widget_accessible = gtk_widget_get_accessible (priv->widget);
-      atk_object_remove_relationship (obj,
-                                      ATK_RELATION_POPUP_FOR,
-                                      widget_accessible);
-    }
-
-  priv->widget = widget;
-
-  if (widget)
-    {
-      AtkObject *parent;
-
-      parent = gtk_widget_get_accessible (widget);
-
-      if (parent)
-        atk_object_set_parent (obj, parent);
-
-      g_object_add_weak_pointer (G_OBJECT (priv->widget),
-                                 (gpointer*) &priv->widget);
-      widget_accessible = gtk_widget_get_accessible (widget);
-      atk_object_add_relationship (obj,
-                                   ATK_RELATION_POPUP_FOR,
-                                   widget_accessible);
-    }
-}
-
 static void
 popover_update_modality (AtkObject  *object,
                          GtkPopover *popover)
@@ -94,9 +49,7 @@ popover_notify_cb (GtkPopover *popover,
 
   popover_accessible = gtk_widget_get_accessible (GTK_WIDGET (popover));
 
-  if (strcmp (g_param_spec_get_name (pspec), "relative-to") == 0)
-    popover_update_relative_to (popover_accessible, popover);
-  else if (strcmp (g_param_spec_get_name (pspec), "modal") == 0)
+  if (strcmp (g_param_spec_get_name (pspec), "modal") == 0)
     popover_update_modality (popover_accessible, popover);
 }
 
@@ -110,7 +63,6 @@ gtk_popover_accessible_initialize (AtkObject *obj,
 
   g_signal_connect (popover, "notify",
                     G_CALLBACK (popover_notify_cb), obj);
-  popover_update_relative_to (obj, popover);
   popover_update_modality (obj, popover);
 
   obj->role = ATK_ROLE_PANEL;
@@ -131,26 +83,11 @@ gtk_popover_accessible_ref_state_set (AtkObject *obj)
   return state_set;
 }
 
-static void
-gtk_popover_accessible_finalize (GObject *object)
-{
-  GtkPopoverAccessiblePrivate *priv;
-
-  priv = gtk_popover_accessible_get_instance_private (GTK_POPOVER_ACCESSIBLE (object));
-
-  if (priv->widget)
-    g_object_remove_weak_pointer (G_OBJECT (priv->widget),
-                                  (gpointer*) &priv->widget);
-  G_OBJECT_CLASS (gtk_popover_accessible_parent_class)->finalize (object);
-}
-
 static void
 gtk_popover_accessible_class_init (GtkPopoverAccessibleClass *klass)
 {
   AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-  object_class->finalize = gtk_popover_accessible_finalize;
   class->initialize = gtk_popover_accessible_initialize;
   class->ref_state_set = gtk_popover_accessible_ref_state_set;
 }
index bc7a4c9fc86f73f317edb32f1ce9f910b6861fc8..f073a7ff68e01bfc4527eef2c5adc2ab72d083d4 100644 (file)
@@ -259,7 +259,8 @@ do_popup (GtkColorSwatch *swatch)
   g_clear_pointer (&priv->popover, gtk_widget_unparent);
 
   model = gtk_color_swatch_get_menu_model (swatch);
-  priv->popover = gtk_popover_menu_new_from_model (GTK_WIDGET (swatch), model);
+  priv->popover = gtk_popover_menu_new_from_model (model);
+  gtk_widget_set_parent (priv->popover, GTK_WIDGET (swatch));
   g_object_unref (model);
 
   gtk_popover_popup (GTK_POPOVER (priv->popover));
index 641cd33438dd28359e46617c112dcc17cd925d04..adc415ebc9f4c1e0d72270e4526197bb50a654a3 100644 (file)
@@ -305,7 +305,8 @@ show_variations (GtkEmojiChooser *chooser,
     return;
 
   parent_popover = gtk_widget_get_ancestor (child, GTK_TYPE_POPOVER);
-  popover = gtk_popover_new (child);
+  popover = gtk_popover_new ();
+  gtk_widget_set_parent (popover, child);
   view = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
   gtk_widget_add_css_class (view, "view");
   box = gtk_flow_box_new ();
index 41e37ff2215b183266fab35fc6e0f6ee61cd7b9c..073961cd992b2d27952abf2b97eab2c9b2eccd0d 100644 (file)
@@ -653,9 +653,8 @@ gtk_emoji_completion_new (GtkText *text)
 {
   GtkEmojiCompletion *completion;
 
-  completion = GTK_EMOJI_COMPLETION (g_object_new (GTK_TYPE_EMOJI_COMPLETION,
-                                                   "relative-to", text,
-                                                   NULL));
+  completion = GTK_EMOJI_COMPLETION (g_object_new (GTK_TYPE_EMOJI_COMPLETION, NULL));
+  gtk_widget_set_parent (GTK_WIDGET (completion), GTK_WIDGET (text));
 
   connect_signals (completion, text);
 
index a3c642edc8ea336c6e37b737aae771854ab7dc55..57b178ee775408b7904c7a691028f51df54128ac 100644 (file)
@@ -582,7 +582,7 @@ gtk_entry_completion_constructed (GObject *object)
                                               NULL);
 
   /* pack it all */
-  priv->popup_window = gtk_popover_new (NULL);
+  priv->popup_window = gtk_popover_new ();
   gtk_popover_set_position (GTK_POPOVER (priv->popup_window), GTK_POS_BOTTOM);
   gtk_popover_set_autohide (GTK_POPOVER (priv->popup_window), FALSE);
   gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_window), FALSE);
@@ -2438,8 +2438,7 @@ _gtk_entry_completion_disconnect (GtkEntryCompletion *completion)
 
   unset_accessible_relation (completion->priv->popup_window,
                              completion->priv->entry);
-  gtk_popover_set_relative_to (GTK_POPOVER (completion->priv->popup_window),
-                               NULL);
+  gtk_widget_unparent (completion->priv->popup_window);
 
   completion->priv->entry = NULL;
 }
@@ -2452,8 +2451,7 @@ _gtk_entry_completion_connect (GtkEntryCompletion *completion,
 
   set_accessible_relation (completion->priv->popup_window,
                            completion->priv->entry);
-  gtk_popover_set_relative_to (GTK_POPOVER (completion->priv->popup_window),
-                              completion->priv->entry);
+  gtk_widget_set_parent (completion->priv->popup_window, GTK_WIDGET (entry));
 
   connect_completion_signals (completion);
 }
index d8909fb5451204f8b8a689b21dbc394cd771af14..1e9774d482212d186e3b614f863d1e1ee885b50a 100644 (file)
@@ -2066,8 +2066,8 @@ file_list_build_popover (GtkFileChooserWidget *impl)
   g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
   g_object_unref (section);
 
-  priv->browse_files_popover = gtk_popover_menu_new_from_model (priv->browse_files_tree_view,
-                                                                G_MENU_MODEL (menu));
+  priv->browse_files_popover = gtk_popover_menu_new_from_model (G_MENU_MODEL (menu));
+  gtk_widget_set_parent (priv->browse_files_popover, priv->browse_files_tree_view);
   g_object_unref (menu);
 }
 
@@ -3264,9 +3264,7 @@ gtk_file_chooser_widget_dispose (GObject *object)
 
   cancel_all_operations (impl);
 
-  if (priv->rename_file_popover)
-    gtk_popover_set_relative_to (GTK_POPOVER (priv->rename_file_popover), NULL);
-
+  g_clear_pointer (&priv->rename_file_popover, gtk_widget_unparent);
   g_clear_pointer (&priv->browse_files_popover, gtk_widget_destroy);
   g_clear_object (&priv->extra_widget);
   g_clear_pointer (&priv->bookmarks_manager, _gtk_bookmarks_manager_free);
@@ -8007,7 +8005,6 @@ post_process_ui (GtkFileChooserWidget *impl)
 
   gtk_popover_set_default_widget (GTK_POPOVER (priv->new_folder_popover), priv->new_folder_create_button);
   gtk_popover_set_default_widget (GTK_POPOVER (priv->rename_file_popover), priv->rename_file_rename_button);
-  gtk_popover_set_relative_to (GTK_POPOVER (priv->rename_file_popover), priv->browse_files_tree_view);
 
   priv->item_actions = G_ACTION_GROUP (g_simple_action_group_new ());
   g_action_map_add_action_entries (G_ACTION_MAP (priv->item_actions),
index 306b01e2c71e1c41cfc5f2d1a596ff2eeb234eff..7cd4f4856dccbcdf61aa7638730561ac11a35122 100644 (file)
@@ -6045,7 +6045,8 @@ gtk_label_do_popup (GtkLabel *label,
       GMenuModel *model;
 
       model = gtk_label_get_menu_model (label);
-      priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (label), model);
+      priv->popup_menu = gtk_popover_menu_new_from_model (model);
+      gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (label));
       gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
 
       gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
index b3dbda9bb1487ff06348472196be32b5a9694f59..d64c3f3a83bc0cb41a084c597b354e1b40f55167 100644 (file)
@@ -421,7 +421,8 @@ gtk_link_button_do_popup (GtkLinkButton *link_button,
       GMenuModel *model;
 
       model = gtk_link_button_get_menu_model ();
-      priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (link_button), model);
+      priv->popup_menu = gtk_popover_menu_new_from_model (model);
+      gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (link_button));
       gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
 
       gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
index 3f6a4da5fd691bf0acf806edff9459b17e461d78..77f0f5198ea51aca670c6467d15664a2a35bed26 100644 (file)
@@ -301,6 +301,7 @@ gtk_menu_button_measure (GtkWidget      *widget,
                       for_size,
                       minimum, natural,
                       minimum_baseline, natural_baseline);
+
 }
 
 static void
@@ -315,7 +316,6 @@ gtk_menu_button_size_allocate (GtkWidget *widget,
   gtk_widget_size_allocate (priv->button,
                             &(GtkAllocation) { 0, 0, width, height },
                             baseline);
-
   if (priv->popover)
     gtk_native_check_resize (GTK_NATIVE (priv->popover));
 }
@@ -552,7 +552,7 @@ gtk_menu_button_set_menu_model (GtkMenuButton *menu_button,
     {
       GtkWidget *popover;
 
-      popover = gtk_popover_menu_new_from_model (GTK_WIDGET (menu_button), menu_model);
+      popover = gtk_popover_menu_new_from_model (menu_model);
       gtk_menu_button_set_popover (menu_button, popover);
     }
   else
@@ -752,7 +752,7 @@ gtk_menu_button_dispose (GObject *object)
       g_signal_handlers_disconnect_by_func (priv->popover,
                                             popover_destroy_cb,
                                             object);
-      gtk_popover_set_relative_to (GTK_POPOVER (priv->popover), NULL);
+      gtk_widget_unparent (priv->popover);
       priv->popover = NULL;
     }
 
@@ -803,14 +803,14 @@ gtk_menu_button_set_popover (GtkMenuButton *menu_button,
                                             popover_destroy_cb,
                                             menu_button);
 
-      gtk_popover_set_relative_to (GTK_POPOVER (priv->popover), NULL);
+      gtk_widget_unparent (priv->popover);
     }
 
   priv->popover = popover;
 
   if (popover)
     {
-      gtk_popover_set_relative_to (GTK_POPOVER (priv->popover), GTK_WIDGET (menu_button));
+      gtk_widget_set_parent (priv->popover, GTK_WIDGET (menu_button));
       g_signal_connect_swapped (priv->popover, "closed",
                                 G_CALLBACK (menu_deactivate_cb), menu_button);
       g_signal_connect_swapped (priv->popover, "destroy",
index 107355eb2456e8c2c419e17c93cf33b59dfaffc1..9aec305ec631b9ee150ad860919371b0a6d15817 100644 (file)
@@ -303,7 +303,7 @@ gtk_menu_section_box_insert_func (GtkMenuTrackerItem *item,
 
           model = _gtk_menu_tracker_item_get_link (item, G_MENU_LINK_SUBMENU);
 
-          submenu = gtk_popover_menu_new_from_model_full (NULL, model, box->flags);
+          submenu = gtk_popover_menu_new_from_model_full (model, box->flags);
           gtk_popover_set_has_arrow (GTK_POPOVER (submenu), FALSE);
           gtk_widget_set_valign (submenu, GTK_ALIGN_START);
 
index 2f5d3aba9e729b0d2ad1de542a137cf1ddab4e55..585fa3e46cb6c8a2b2bf0851901a96bf4c0080e0 100644 (file)
@@ -699,13 +699,13 @@ gtk_model_button_set_popover (GtkModelButton *button,
                               GtkWidget      *popover)
 {
   if (button->popover)
-    gtk_popover_set_relative_to (GTK_POPOVER (button->popover), NULL);
+    gtk_widget_unparent (button->popover);
 
   button->popover = popover;
 
   if (button->popover)
     {
-      gtk_popover_set_relative_to (GTK_POPOVER (button->popover), GTK_WIDGET (button));
+      gtk_widget_set_parent (button->popover, GTK_WIDGET (button));
       gtk_popover_set_position (GTK_POPOVER (button->popover), GTK_POS_RIGHT);
     }
 
index a9feb8dde58787d3c80dd10b1bd533029ff756a1..51d926c401b50d23d4732bcfc4db2ec12513b666 100644 (file)
@@ -1413,7 +1413,8 @@ do_popup_menu_for_process_tree_view (GtkWidget         *widget,
   GtkWidget *item;
   double x, y;
 
-  menu = gtk_popover_new (widget);
+  menu = gtk_popover_new ();
+  gtk_widget_set_parent (menu, widget);
   gtk_style_context_add_class (gtk_widget_get_style_context (menu),
                                GTK_STYLE_CLASS_CONTEXT_MENU);
 
index 4d89d6766e8a85b297c6f901a89c5784519ff7a3..a1d28ec6987b4f1de996c1b2279c7a3e8edeceae 100644 (file)
@@ -6531,7 +6531,8 @@ gtk_notebook_popup_enable (GtkNotebook *notebook)
   if (priv->menu)
     return;
 
-  priv->menu = gtk_popover_menu_new (priv->tabs_widget);
+  priv->menu = gtk_popover_menu_new ();
+  gtk_widget_set_parent (priv->menu, priv->tabs_widget);
 
   priv->menu_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_popover_menu_add_submenu (GTK_POPOVER_MENU (priv->menu), priv->menu_box, "main");
index 86b6e06a502e807e2c48dd82f175a12811dbb85e..1e50e8cc029f10c07feb16024f26e332bf1f7e62 100644 (file)
@@ -2558,7 +2558,8 @@ create_rename_popover (GtkPlacesSidebar *sidebar)
   if (sidebar->rename_popover)
     return;
 
-  popover = gtk_popover_new (GTK_WIDGET (sidebar));
+  popover = gtk_popover_new ();
+  gtk_widget_set_parent (popover, GTK_WIDGET (sidebar));
   /* Clean sidebar pointer when its destroyed, most of the times due to its
    * relative_to associated row being destroyed */
   g_signal_connect (popover, "destroy", G_CALLBACK (on_rename_popover_destroy), sidebar);
@@ -2625,13 +2626,13 @@ update_popover_shadowing (GtkWidget *row,
 static void
 set_prelight (GtkPopover *popover)
 {
-  update_popover_shadowing (gtk_popover_get_relative_to (popover), TRUE);
+  update_popover_shadowing (gtk_widget_get_parent (GTK_WIDGET (popover)), TRUE);
 }
 
 static void
 unset_prelight (GtkPopover *popover)
 {
-  update_popover_shadowing (gtk_popover_get_relative_to (popover), FALSE);
+  update_popover_shadowing (gtk_widget_get_parent (GTK_WIDGET (popover)), FALSE);
 }
 
 static void
@@ -2661,7 +2662,7 @@ show_rename_popover (GtkSidebarRow *row)
   sidebar->rename_uri = g_strdup (uri);
 
   gtk_editable_set_text (GTK_EDITABLE (sidebar->rename_entry), name);
-  gtk_popover_set_relative_to (GTK_POPOVER (sidebar->rename_popover), GTK_WIDGET (row));
+  gtk_widget_set_parent (sidebar->rename_popover, GTK_WIDGET (row));
   setup_popover_shadowing (sidebar->rename_popover);
 
   gtk_popover_popup (GTK_POPOVER (sidebar->rename_popover));
@@ -3513,7 +3514,8 @@ create_row_popover (GtkPlacesSidebar *sidebar,
     }
 #endif
 
-  sidebar->popover = gtk_popover_new (GTK_WIDGET (sidebar));
+  sidebar->popover = gtk_popover_new ();
+  gtk_widget_set_parent (sidebar->popover, GTK_WIDGET (sidebar));
   /* Clean sidebar pointer when its destroyed, most of the times due to its
    * relative_to associated row being destroyed */
   g_signal_connect (sidebar->popover, "destroy", G_CALLBACK (on_row_popover_destroy), sidebar);
@@ -3561,7 +3563,7 @@ show_row_popover (GtkSidebarRow *row)
 
   create_row_popover (sidebar, row);
 
-  gtk_popover_set_relative_to (GTK_POPOVER (sidebar->popover), GTK_WIDGET (row));
+  gtk_widget_set_parent (sidebar->popover, GTK_WIDGET (row));
 
   sidebar->context_row = row;
   gtk_popover_popup (GTK_POPOVER (sidebar->popover));
index 8a54c1b3f3d45a955e3ce4ae60bc2f973fcc2e63..a20e0642c10f140acbe6b4d56a72f44f717b7494 100644 (file)
@@ -1729,7 +1729,8 @@ popup_menu (GtkPlacesViewRow *row,
     {
       GMenuModel *model = get_menu_model ();
 
-      priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (view), model);
+      priv->popup_menu = gtk_popover_menu_new_from_model (model);
+      gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (view));
       gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
 
       gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
@@ -1739,7 +1740,7 @@ popup_menu (GtkPlacesViewRow *row,
     }
 
   gtk_widget_set_halign (priv->popup_menu, GTK_ALIGN_CENTER);
-  gtk_popover_set_relative_to (GTK_POPOVER (priv->popup_menu), GTK_WIDGET (row));
+  gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (row));
 
   priv->row_for_action = row;
   gtk_popover_popup (GTK_POPOVER (priv->popup_menu));
index d36159cde119109fafc81e410c39cdd54afe7b00..f928041973e6f510113baa43697be64379a810c3 100644 (file)
@@ -25,8 +25,7 @@
  *
  * GtkPopover is a bubble-like context window, primarily meant to
  * provide context-dependent information or options. Popovers are
- * attached to a widget, passed at construction time on gtk_popover_new(),
- * or updated afterwards through gtk_popover_set_relative_to(), by
+ * attached to a widget, set with gtk_widget_set_parent(). By
  * default they will point to the whole widget area, although this
  * behavior can be changed through gtk_popover_set_pointing_to().
  *
@@ -143,7 +142,6 @@ typedef struct {
   GtkWidget *default_widget;
 
   GdkSurfaceState state;
-  GtkWidget *relative_to;
   GdkRectangle pointing_to;
   gboolean has_pointing_to;
   guint surface_transform_changed_cb;
@@ -169,8 +167,7 @@ enum {
 static guint signals[LAST_SIGNAL] = { 0 };
 
 enum {
-  PROP_RELATIVE_TO = 1,
-  PROP_POINTING_TO,
+  PROP_POINTING_TO = 1,
   PROP_POSITION,
   PROP_AUTOHIDE,
   PROP_DEFAULT_WIDGET,
@@ -416,8 +413,10 @@ create_popup_layout (GtkPopover *popover)
   GdkGravity surface_anchor;
   GdkAnchorHints anchor_hints;
   GdkPopupLayout *layout;
+  GtkWidget *parent;
 
-  gtk_widget_get_surface_allocation (priv->relative_to, &rect);
+  parent = gtk_widget_get_parent (GTK_WIDGET (popover));
+  gtk_widget_get_surface_allocation (parent, &rect);
   if (priv->has_pointing_to)
     {
       rect.x += priv->pointing_to.x;
@@ -653,7 +652,7 @@ gtk_popover_activate_default (GtkPopover *popover)
   GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
   GtkWidget *focus_widget;
 
-  focus_widget = gtk_window_get_focus (GTK_WINDOW (gtk_widget_get_root (priv->relative_to)));
+  focus_widget = gtk_window_get_focus (GTK_WINDOW (gtk_widget_get_root (GTK_WIDGET (popover))));
   if (!gtk_widget_is_ancestor (focus_widget, GTK_WIDGET (popover)))
     focus_widget = NULL;
 
@@ -744,10 +743,12 @@ gtk_popover_realize (GtkWidget *widget)
 {
   GtkPopover *popover = GTK_POPOVER (widget);
   GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
-  GdkSurface *parent;
+  GdkSurface *parent_surface;
+  GtkWidget *parent;
 
-  parent = gtk_native_get_surface (gtk_widget_get_native (priv->relative_to));
-  priv->surface = gdk_surface_new_popup (parent, priv->autohide);
+  parent = gtk_widget_get_parent (widget);
+  parent_surface = gtk_native_get_surface (gtk_widget_get_native (parent));
+  priv->surface = gdk_surface_new_popup (parent_surface, priv->autohide);
 
   gdk_surface_set_widget (priv->surface, widget);
 
@@ -838,11 +839,13 @@ gtk_popover_map (GtkWidget *widget)
   GtkPopover *popover = GTK_POPOVER (widget);
   GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
   GtkWidget *child;
+  GtkWidget *parent;
 
   present_popup (popover);
 
+  parent = gtk_widget_get_parent (widget);
   priv->surface_transform_changed_cb =
-    gtk_widget_add_surface_transform_changed_callback (priv->relative_to,
+    gtk_widget_add_surface_transform_changed_callback (parent,
                                                        surface_transform_changed_cb,
                                                        popover,
                                                        unset_surface_transform_changed_cb);
@@ -860,8 +863,10 @@ gtk_popover_unmap (GtkWidget *widget)
   GtkPopover *popover = GTK_POPOVER (widget);
   GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
   GtkWidget *child;
+  GtkWidget *parent;
 
-  gtk_widget_remove_surface_transform_changed_callback (priv->relative_to,
+  parent = gtk_widget_get_parent (widget);
+  gtk_widget_remove_surface_transform_changed_callback (parent,
                                                         priv->surface_transform_changed_cb);
   priv->surface_transform_changed_cb = 0;
 
@@ -926,11 +931,13 @@ gtk_popover_get_gap_coords (GtkPopover *popover,
   int border_radius;
   int popover_width, popover_height;
   GtkCssStyle *style;
+  GtkWidget *parent;
 
   popover_width = gtk_widget_get_allocated_width (widget);
   popover_height = gtk_widget_get_allocated_height (widget);
+  parent = gtk_widget_get_parent (widget);
 
-  gtk_widget_get_surface_allocation (priv->relative_to, &rect);
+  gtk_widget_get_surface_allocation (parent, &rect);
   if (priv->has_pointing_to)
     {
       rect.x += priv->pointing_to.x;
@@ -1097,8 +1104,11 @@ gtk_popover_apply_tail_path (GtkPopover *popover,
   gint tip_x, tip_y;
   gint final_x, final_y;
   GtkBorder border;
+  GtkWidget *parent;
 
-  if (!priv->relative_to)
+  parent = gtk_widget_get_parent (GTK_WIDGET (popover));
+
+  if (!parent)
     return;
 
   get_border (priv->arrow_node, &border);
@@ -1364,10 +1374,6 @@ gtk_popover_set_property (GObject      *object,
 
   switch (prop_id)
     {
-    case PROP_RELATIVE_TO:
-      gtk_popover_set_relative_to (popover, g_value_get_object (value));
-      break;
-
     case PROP_POINTING_TO:
       gtk_popover_set_pointing_to (popover, g_value_get_boxed (value));
       break;
@@ -1405,10 +1411,6 @@ gtk_popover_get_property (GObject      *object,
 
   switch (prop_id)
     {
-    case PROP_RELATIVE_TO:
-      g_value_set_object (value, priv->relative_to);
-      break;
-
     case PROP_POINTING_TO:
       g_value_set_boxed (value, &priv->pointing_to);
       break;
@@ -1483,13 +1485,6 @@ gtk_popover_class_init (GtkPopoverClass *klass)
 
   klass->activate_default = gtk_popover_activate_default;
 
-  properties[PROP_RELATIVE_TO] =
-      g_param_spec_object ("relative-to",
-                           P_("Relative to"),
-                           P_("Widget the bubble window points to"),
-                           GTK_TYPE_WIDGET,
-                           GTK_PARAM_READWRITE);
-
   properties[PROP_POINTING_TO] =
       g_param_spec_boxed ("pointing-to",
                           P_("Pointing to"),
@@ -1551,24 +1546,9 @@ gtk_popover_class_init (GtkPopoverClass *klass)
 }
 
 GtkWidget *
-gtk_popover_new (GtkWidget *relative_to)
+gtk_popover_new (void)
 {
-  return GTK_WIDGET (g_object_new (GTK_TYPE_POPOVER,
-                                   "relative-to", relative_to,
-                                   NULL));
-}
-
-static void
-relative_to_size_changed (GtkWidget  *widget,
-                          int         width,
-                          int         height,
-                          int         baseline,
-                          GtkPopover *popover)
-{
-  GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
-
-  if (priv->surface && gdk_surface_get_mapped (priv->surface))
-    present_popup (popover);
+  return g_object_new (GTK_TYPE_POPOVER, NULL);
 }
 
 void
@@ -1610,79 +1590,13 @@ gtk_popover_native_interface_init (GtkNativeInterface *iface)
   iface->check_resize = gtk_popover_native_check_resize;
 }
 
-/**
- * gtk_popover_set_relative_to:
- * @popover: a #GtkPopover
- * @relative_to: (allow-none): a #GtkWidget
- *
- * Sets a new widget to be attached to @popover. If @popover is
- * visible, the position will be updated.
- *
- * Note: the ownership of popovers is always given to their @relative_to
- * widget, so if @relative_to is set to %NULL on an attached @popover, it
- * will be detached from its previous widget, and consequently destroyed
- * unless extra references are kept.
- **/
-void
-gtk_popover_set_relative_to (GtkPopover *popover,
-                             GtkWidget  *relative_to)
-{
-  GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
-  
-  g_return_if_fail (GTK_IS_POPOVER (popover));
-
-  g_object_ref (popover);
-
-  if (priv->relative_to)
-    {
-      g_signal_handlers_disconnect_by_func (priv->relative_to,
-                                            relative_to_size_changed,
-                                            popover);
-      gtk_widget_unparent (GTK_WIDGET (popover));
-    }
-
-  priv->relative_to = relative_to;
-
-  if (priv->relative_to)
-    {
-      g_signal_connect_object (priv->relative_to, "size-allocate",
-                               G_CALLBACK (relative_to_size_changed), popover, 0);
-      gtk_css_node_set_parent (gtk_widget_get_css_node (GTK_WIDGET (popover)),
-                               gtk_widget_get_css_node (relative_to));
-      gtk_widget_set_parent (GTK_WIDGET (popover), relative_to);
-    }
-
-  g_object_notify_by_pspec (G_OBJECT (popover), properties[PROP_RELATIVE_TO]);
-
-  g_object_unref (popover);
-}
-
-/**
- * gtk_popover_get_relative_to:
- * @popover: a #GtkPopover
- *
- * Returns the widget @popover is currently attached to
- *
- * Returns: (transfer none): a #GtkWidget
- **/
-GtkWidget *
-gtk_popover_get_relative_to (GtkPopover *popover)
-{
-  GtkPopoverPrivate *priv = gtk_popover_get_instance_private (popover);
-
-  g_return_val_if_fail (GTK_IS_POPOVER (popover), NULL);
-
-  return priv->relative_to;
-}
-
 /**
  * gtk_popover_set_pointing_to:
  * @popover: a #GtkPopover
  * @rect: rectangle to point to
  *
  * Sets the rectangle that @popover will point to, in the
- * coordinate space of the widget @popover is attached to,
- * see gtk_popover_set_relative_to().
+ * coordinate space of the @popover parent.
  **/
 void
 gtk_popover_set_pointing_to (GtkPopover         *popover,
@@ -1726,11 +1640,12 @@ gtk_popover_get_pointing_to (GtkPopover   *popover,
 
   if (priv->has_pointing_to)
     *rect = priv->pointing_to;
-  else if (priv->relative_to)
+  else
     {
       graphene_rect_t r;
+      GtkWidget *parent = gtk_widget_get_parent (GTK_WIDGET (popover));
 
-      if (!gtk_widget_compute_bounds (priv->relative_to, priv->relative_to, &r))
+      if (!gtk_widget_compute_bounds (parent, parent, &r))
         return FALSE;
 
       rect->x = floorf (r.origin.x);
index 41b5956c9ec3bc95206130a2363e342242429f75..c89d2a1acaedf4ca6f088448439ff3d45d6c7656 100644 (file)
@@ -60,13 +60,7 @@ GDK_AVAILABLE_IN_ALL
 GType           gtk_popover_get_type (void) G_GNUC_CONST;
 
 GDK_AVAILABLE_IN_ALL
-GtkWidget *     gtk_popover_new             (GtkWidget    *relative_to);
-
-GDK_AVAILABLE_IN_ALL
-void            gtk_popover_set_relative_to (GtkPopover   *popover,
-                                             GtkWidget    *relative_to);
-GDK_AVAILABLE_IN_ALL
-GtkWidget *     gtk_popover_get_relative_to (GtkPopover   *popover);
+GtkWidget *     gtk_popover_new             (void);
 
 GDK_AVAILABLE_IN_ALL
 void            gtk_popover_set_pointing_to (GtkPopover         *popover,
index 2f73218d889c6178c4b67b114ac91f5a427948d3..584a5c5f14c1d0e3c93f69c17c490d8fb024f79e 100644 (file)
@@ -461,21 +461,17 @@ gtk_popover_menu_class_init (GtkPopoverMenuClass *klass)
 
 /**
  * gtk_popover_menu_new:
- * @relative_to: (allow-none): #GtkWidget the popover is related to
  *
  * Creates a new popover menu.
  *
  * Returns: a new #GtkPopoverMenu
  */
 GtkWidget *
-gtk_popover_menu_new (GtkWidget *relative_to)
+gtk_popover_menu_new (void)
 {
   GtkWidget *popover;
 
-  g_return_val_if_fail (relative_to == NULL || GTK_IS_WIDGET (relative_to), NULL);
-
   popover = g_object_new (GTK_TYPE_POPOVER_MENU,
-                          "relative-to", relative_to,
                           "autohide", TRUE,
                           NULL);
 
@@ -522,11 +518,10 @@ gtk_popover_menu_add_submenu (GtkPopoverMenu *popover,
 
 /**
  * gtk_popover_menu_new_from_model:
- * @relative_to: (allow-none): #GtkWidget the popover is related to
  * @model: (allow-none): a #GMenuModel, or %NULL
  *
  * Creates a #GtkPopoverMenu and populates it according to
- * @model. The popover is pointed to the @relative_to widget.
+ * @model.
  *
  * The created buttons are connected to actions found in the
  * #GtkApplicationWindow to which the popover belongs - typically
@@ -543,27 +538,25 @@ gtk_popover_menu_add_submenu (GtkPopoverMenu *popover,
  * Returns: the new #GtkPopoverMenu
  */
 GtkWidget *
-gtk_popover_menu_new_from_model (GtkWidget  *relative_to,
-                                 GMenuModel *model)
+gtk_popover_menu_new_from_model (GMenuModel *model)
 
 {
-  return gtk_popover_menu_new_from_model_full (relative_to, model, 0);
+  return gtk_popover_menu_new_from_model_full (model, 0);
 }
 
 /**
  * gtk_popover_menu_new_from_model_full:
- * @relative_to: (allow-none): #GtkWidget the popover is related to
  * @model: a #GMenuModel
  * @flags: flags that affect how the menu is created
  *
  * Creates a #GtkPopoverMenu and populates it according to
- * @model. The popover is pointed to the @relative_to widget.
+ * @model.
  *
  * The created buttons are connected to actions found in the
- * action groups that are accessible from the @relative-to widget.
+ * action groups that are accessible from the parent widget.
  * This includes the #GtkApplicationWindow to which the popover
  * belongs. Actions can also be added using gtk_widget_insert_action_group()
- * on the @relative-to widget or on any of its parent widgets.
+ * on the parent widget or on any of its parent widgets.
  *
  * The only flag that is supported currently is
  * #GTK_POPOVER_MENU_NESTED, which makes GTK create traditional,
@@ -572,16 +565,14 @@ gtk_popover_menu_new_from_model (GtkWidget  *relative_to,
  * Returns: (transfer full): the new #GtkPopoverMenu
  */
 GtkWidget *
-gtk_popover_menu_new_from_model_full (GtkWidget           *relative_to,
-                                      GMenuModel          *model,
+gtk_popover_menu_new_from_model_full (GMenuModel          *model,
                                       GtkPopoverMenuFlags  flags)
 {
   GtkWidget *popover;
 
-  g_return_val_if_fail (relative_to == NULL || GTK_IS_WIDGET (relative_to), NULL);
   g_return_val_if_fail (model == NULL || G_IS_MENU_MODEL (model), NULL);
 
-  popover = gtk_popover_menu_new (relative_to);
+  popover = gtk_popover_menu_new ();
   GTK_POPOVER_MENU (popover)->flags = flags;
   gtk_popover_menu_set_menu_model (GTK_POPOVER_MENU (popover), model);
 
index af393143a285400730d621b5c2c7e1ab89f15bb3..f9f8457b27be6427b4e00c6a00fa95b050751652 100644 (file)
@@ -36,8 +36,7 @@ GDK_AVAILABLE_IN_ALL
 GType       gtk_popover_menu_get_type (void) G_GNUC_CONST;
 
 GDK_AVAILABLE_IN_ALL
-GtkWidget * gtk_popover_menu_new_from_model (GtkWidget  *relative_to,
-                                             GMenuModel *model);
+GtkWidget * gtk_popover_menu_new_from_model (GMenuModel *model);
 
 /**
  * GtkPopoverMenuFlags:
@@ -53,8 +52,7 @@ typedef enum {
 } GtkPopoverMenuFlags;
 
 GDK_AVAILABLE_IN_ALL
-GtkWidget * gtk_popover_menu_new_from_model_full (GtkWidget           *relative_to,
-                                                  GMenuModel          *model,
+GtkWidget * gtk_popover_menu_new_from_model_full (GMenuModel          *model,
                                                   GtkPopoverMenuFlags  flags);
 
 GDK_AVAILABLE_IN_ALL
index 411d4c0358b5d61c08b346371a4b0d632dd6708b..00362a11e47a9617bee3d4934c9f869c28cd538a 100644 (file)
@@ -405,7 +405,8 @@ tracker_insert (GtkMenuTrackerItem *item,
                               G_BINDING_SYNC_CREATE);
 
       model = _gtk_menu_tracker_item_get_link (item, G_MENU_LINK_SUBMENU);
-      popover = GTK_POPOVER (gtk_popover_menu_new_from_model_full (GTK_WIDGET (widget), model, GTK_POPOVER_MENU_NESTED));
+      popover = GTK_POPOVER (gtk_popover_menu_new_from_model_full (model, GTK_POPOVER_MENU_NESTED));
+      gtk_widget_set_parent (GTK_WIDGET (popover), GTK_WIDGET (widget));
       gtk_popover_set_position (popover, GTK_POS_BOTTOM);
       gtk_popover_set_has_arrow (popover, FALSE);
       gtk_widget_set_halign (GTK_WIDGET (popover), GTK_ALIGN_START);
index b0062cf5605440cbe5753b3ba8b22d0f15c6e8ea..215fa1ea9966133717d85b5938690aca4e8e4415 100644 (file)
@@ -32,7 +32,7 @@ GtkWidget *gtk_popover_menu_get_parent_menu  (GtkPopoverMenu *menu);
 void       gtk_popover_menu_set_parent_menu  (GtkPopoverMenu *menu,
                                               GtkWidget      *parent);
 
-GtkWidget * gtk_popover_menu_new (GtkWidget  *relative_to);
+GtkWidget * gtk_popover_menu_new (void);
 
 void  gtk_popover_menu_add_submenu (GtkPopoverMenu *popover,
                                     GtkWidget      *submenu,
index 740ca3efb03797e60c55fb1e8f4e28dc7e5410f8..3b41e6a64cf460b6d0e775c7bb79dcd8557d054b 100644 (file)
@@ -376,7 +376,7 @@ gtk_scale_button_init (GtkScaleButton *button)
   priv->applied_orientation = GTK_ORIENTATION_VERTICAL;
 
   gtk_widget_init_template (GTK_WIDGET (button));
-  gtk_popover_set_relative_to (GTK_POPOVER (priv->dock), GTK_WIDGET (button));
+  gtk_widget_set_parent (priv->dock, GTK_WIDGET (button));
 
   /* Need a local reference to the adjustment */
   priv->adjustment = gtk_adjustment_new (0, 0, 100, 2, 20, 0);
index 14cb212e1c493f12dd01e4c6ff57e1a888fe7aa6..7f575032e097dca284903e19721c3762f9ea43b7 100644 (file)
@@ -932,7 +932,6 @@ gtk_shortcuts_window_init (GtkShortcutsWindow *self)
   gtk_stack_add_named (priv->title_stack, GTK_WIDGET (priv->menu_button), "sections");
 
   priv->popover = g_object_new (GTK_TYPE_POPOVER,
-                                "relative-to", priv->menu_button,
                                 "position", GTK_POS_BOTTOM,
                                 NULL);
   gtk_menu_button_set_popover (priv->menu_button, GTK_WIDGET (priv->popover));
index 119e2d83866730c73a0ad5a0780362cbff2554ce..74d11dae9b7c846c82048706f10b88fe265a2af1 100644 (file)
@@ -1898,7 +1898,8 @@ gtk_text_ensure_magnifier (GtkText *self)
   priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (self));
   gtk_widget_set_size_request (priv->magnifier, 100, 60);
   _gtk_magnifier_set_magnification (GTK_MAGNIFIER (priv->magnifier), 2.0);
-  priv->magnifier_popover = gtk_popover_new (GTK_WIDGET (self));
+  priv->magnifier_popover = gtk_popover_new ();
+  gtk_widget_set_parent (priv->magnifier_popover, GTK_WIDGET (self));
   gtk_widget_add_css_class (priv->magnifier_popover, "magnifier");
   gtk_popover_set_autohide (GTK_POPOVER (priv->magnifier_popover), FALSE);
   gtk_container_add (GTK_CONTAINER (priv->magnifier_popover),
@@ -2527,7 +2528,8 @@ gtk_text_do_popup (GtkText *self,
       GMenuModel *model;
 
       model = gtk_text_get_menu_model (self);
-      priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (self), model);
+      priv->popup_menu = gtk_popover_menu_new_from_model (model);
+      gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (self));
       gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
 
       gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
@@ -6026,7 +6028,8 @@ gtk_text_selection_bubble_popup_show (gpointer user_data)
 
   g_clear_pointer (&priv->selection_bubble, gtk_widget_unparent);
 
-  priv->selection_bubble = gtk_popover_new (GTK_WIDGET (self));
+  priv->selection_bubble = gtk_popover_new ();
+  gtk_widget_set_parent (priv->selection_bubble, GTK_WIDGET (self));
   gtk_widget_add_css_class (priv->selection_bubble, GTK_STYLE_CLASS_TOUCH_SELECTION);
   gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
   gtk_popover_set_autohide (GTK_POPOVER (priv->selection_bubble), FALSE);
@@ -6788,7 +6791,7 @@ gtk_text_insert_emoji (GtkText *self)
       chooser = gtk_emoji_chooser_new ();
       g_object_set_data (G_OBJECT (self), "gtk-emoji-chooser", chooser);
 
-      gtk_popover_set_relative_to (GTK_POPOVER (chooser), GTK_WIDGET (self));
+      gtk_widget_set_parent (chooser, GTK_WIDGET (self));
       g_signal_connect (chooser, "emoji-picked", G_CALLBACK (emoji_picked), self);
     }
 
index 8f48e05b64124c4f0538dbe1fa1efb3626846619..a2ae4cdd2e4f91fc88f7c4851ed0425b4000da77 100644 (file)
@@ -1756,7 +1756,8 @@ _gtk_text_view_ensure_magnifier (GtkTextView *text_view)
 
   priv->magnifier = _gtk_magnifier_new (GTK_WIDGET (text_view));
   _gtk_magnifier_set_magnification (GTK_MAGNIFIER (priv->magnifier), 2.0);
-  priv->magnifier_popover = gtk_popover_new (GTK_WIDGET (text_view));
+  priv->magnifier_popover = gtk_popover_new ();
+  gtk_widget_set_parent (priv->magnifier_popover, GTK_WIDGET (text_view));
   gtk_widget_add_css_class (priv->magnifier_popover, "magnifier");
   gtk_popover_set_autohide (GTK_POPOVER (priv->magnifier_popover), FALSE);
   gtk_container_add (GTK_CONTAINER (priv->magnifier_popover),
@@ -8633,7 +8634,8 @@ gtk_text_view_do_popup (GtkTextView    *text_view,
       GMenuModel *model;
 
       model = gtk_text_view_get_menu_model (text_view);
-      priv->popup_menu = gtk_popover_menu_new_from_model (GTK_WIDGET (text_view), model);
+      priv->popup_menu = gtk_popover_menu_new_from_model (model);
+      gtk_widget_set_parent (priv->popup_menu, GTK_WIDGET (text_view));
       gtk_popover_set_position (GTK_POPOVER (priv->popup_menu), GTK_POS_BOTTOM);
 
       gtk_popover_set_has_arrow (GTK_POPOVER (priv->popup_menu), FALSE);
@@ -8847,7 +8849,8 @@ gtk_text_view_selection_bubble_popup_show (gpointer user_data)
 
   g_clear_pointer (&priv->selection_bubble, gtk_widget_unparent);
 
-  priv->selection_bubble = gtk_popover_new (GTK_WIDGET (text_view));
+  priv->selection_bubble = gtk_popover_new ();
+  gtk_widget_set_parent (priv->selection_bubble, GTK_WIDGET (text_view));
   gtk_widget_add_css_class (priv->selection_bubble, GTK_STYLE_CLASS_TOUCH_SELECTION);
   gtk_popover_set_position (GTK_POPOVER (priv->selection_bubble), GTK_POS_BOTTOM);
   gtk_popover_set_autohide (GTK_POPOVER (priv->selection_bubble), FALSE);
@@ -9646,7 +9649,7 @@ gtk_text_view_insert_emoji (GtkTextView *text_view)
       chooser = gtk_emoji_chooser_new ();
       g_object_set_data (G_OBJECT (text_view), "gtk-emoji-chooser", chooser);
 
-      gtk_popover_set_relative_to (GTK_POPOVER (chooser), GTK_WIDGET (text_view));
+      gtk_widget_set_parent (chooser, GTK_WIDGET (text_view));
       g_signal_connect_swapped (chooser, "emoji-picked",
                                 G_CALLBACK (gtk_text_view_insert_at_cursor), text_view);
     }
index 9790d91bcdcec5f01a74ab80e78def0bfa5e1a0a..8c41725d753b4cf3ec0cc844397aa26bf85e5e58 100644 (file)
@@ -10053,7 +10053,8 @@ gtk_tree_view_ensure_interactive_directory (GtkTreeView *tree_view)
   if (tree_view->search_popover)
     return;
 
-  tree_view->search_popover = gtk_popover_new (GTK_WIDGET (tree_view));
+  tree_view->search_popover = gtk_popover_new ();
+  gtk_widget_set_parent (tree_view->search_popover, GTK_WIDGET (tree_view));
   gtk_popover_set_autohide (GTK_POPOVER (tree_view->search_popover), FALSE);
 
   controller = gtk_event_controller_key_new ();
index c62fa14567d3314cf269355d15617919e6a28db1..0aa7583ffe8aec7b9e88d62325e5dc498097ca9c 100644 (file)
@@ -6750,7 +6750,8 @@ gtk_window_do_popup_fallback (GtkWindow      *window,
   minimized = (state & GDK_SURFACE_STATE_MINIMIZED) == GDK_SURFACE_STATE_MINIMIZED;
   maximized = priv->maximized && !minimized;
 
-  priv->popup_menu = gtk_popover_menu_new (priv->title_box);
+  priv->popup_menu = gtk_popover_menu_new ();
+  gtk_widget_set_parent (priv->popup_menu, priv->title_box);
 
   box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_popover_menu_add_submenu (GTK_POPOVER_MENU (priv->popup_menu), box, "main");
index c465f7a5a9dabac60ca4ef321275e4ed6a4ce48d..52e94a52c70f4d55c93755ba36b6b8db6954c9a8 100644 (file)
@@ -102,7 +102,8 @@ show_node_prop_editor (NodePropEditor *npe)
   GtkWidget *popover;
   GtkWidget *editor;
 
-  popover = gtk_popover_new (GTK_WIDGET (npe->cnt->priv->node_tree));
+  popover = gtk_popover_new ();
+  gtk_widget_set_parent (popover, GTK_WIDGET (npe->cnt->priv->node_tree));
   gtk_popover_set_pointing_to (GTK_POPOVER (popover), &npe->rect);
 
   editor = gtk_inspector_prop_editor_new (G_OBJECT (npe->node), npe->prop_name, NULL);
index 72dc14c2a817e394d02e76637bdd8fc4b1cdc1ee..1a88b38dbe3e22256564cade0357cd1fb217dc9f 100644 (file)
@@ -943,7 +943,7 @@ property_editor (GObject                *object,
         GFlagsClass *fclass;
         gint j;
 
-        popover = gtk_popover_new (NULL);        
+        popover = gtk_popover_new ();        
         prop_edit = gtk_menu_button_new ();
         gtk_menu_button_set_popover (GTK_MENU_BUTTON (prop_edit), popover);
 
@@ -1010,7 +1010,7 @@ property_editor (GObject                *object,
       GtkWidget *sw; 
       GListModel *model;
 
-      popover = gtk_popover_new (NULL);        
+      popover = gtk_popover_new ();        
       prop_edit = gtk_menu_button_new ();
       gtk_menu_button_set_popover (GTK_MENU_BUTTON (prop_edit), popover);
 
index ac8e8d23801aade909ea419f00611e449fc45ffe..eade68bccad7d1e3f2394be157f380a5df5e43a1 100644 (file)
@@ -1163,7 +1163,8 @@ node_property_activated (GtkTreeView *tv,
   if (texture == NULL || visible)
     return;
 
-  popover = gtk_popover_new (GTK_WIDGET (tv));
+  popover = gtk_popover_new ();
+  gtk_widget_set_parent (popover, GTK_WIDGET (tv));
   gtk_popover_set_pointing_to (GTK_POPOVER (popover), &rect);
 
   image = gtk_image_new_from_paintable (GDK_PAINTABLE (texture));
index 4739b3d35d960a7ecda9d1f7ad585f1679ec3fb9..87bab550f097ec820bde91bdbafd909c01c0c34d 100644 (file)
         </child>
       </object>
     </child>
-  </template>
-  <object class="GtkCellAreaBox" id="area"/>
+    <child>
   <object class="GtkTreePopover" id="popup_widget">
-    <property name="cell-area">area</property>
-    <property name="relative-to">GtkComboBox</property>
+    <property name="cell-area"><object class="GtkCellAreaBox" id="area"/></property>
     <property name="has-arrow">0</property>
     <signal name="menu-activate" handler="gtk_combo_box_menu_activate" swapped="no"/>
     <signal name="show" handler="gtk_combo_box_menu_show" swapped="no"/>
@@ -38,4 +36,6 @@
       </object>
     </child>
   </object>
+  </child>
+  </template>
 </interface>
index 799b82cabc546aac8c7a6177ae8ec16c23d4fc65..bc00c725e1d2e26f02fe496a071eeff0e6052fa2 100644 (file)
@@ -14,7 +14,6 @@
     <property name="popup-completion">0</property>
   </object>
   <object class="GtkPopover" id="server_adresses_popover">
-    <property name="relative-to">address_entry</property>
     <property name="position">top</property>
     <child>
       <object class="GtkBox">
index a4aa9fadbb54f521b18266777a84c56bb7ae4180..dcb31ee20978f5af5638a81b72be0aa9e158dbb3 100644 (file)
@@ -194,7 +194,7 @@ main (int argc, char *argv[])
 
   button = gtk_menu_button_new ();
   gtk_menu_button_set_direction (GTK_MENU_BUTTON (button), GTK_ARROW_UP);
-  popover = gtk_popover_new (NULL);
+  popover = gtk_popover_new ();
   label = gtk_label_new ("Popovers work too!");
   gtk_container_add (GTK_CONTAINER (popover), label);
 
index 7b9db930104ea09019358921fbe3200aa2322ae8..4438e3a1d47adfce43b93c69faa27c074eecc157 100644 (file)
@@ -141,7 +141,7 @@ static void
 do_copy (GtkWidget *button)
 {
   GtkWidget *popover = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
-  GtkWidget *image = gtk_popover_get_relative_to (GTK_POPOVER (popover));
+  GtkWidget *image = gtk_widget_get_parent (popover);
   GdkDrop *drop = GDK_DROP (g_object_get_data (G_OBJECT (image), "drop"));
 
   gtk_popover_popdown (GTK_POPOVER (popover));
@@ -152,7 +152,7 @@ static void
 do_cancel (GtkWidget *button)
 {
   GtkWidget *popover = gtk_widget_get_ancestor (button, GTK_TYPE_POPOVER);
-  GtkWidget *image = gtk_popover_get_relative_to (GTK_POPOVER (popover));
+  GtkWidget *image = gtk_widget_get_parent (popover);
   GdkDrop *drop = GDK_DROP (g_object_get_data (G_OBJECT (image), "drop"));
 
   gtk_popover_popdown (GTK_POPOVER (popover));
@@ -170,7 +170,8 @@ ask_actions (GdkDrop *drop,
   popover = g_object_get_data (G_OBJECT (image), "popover");
   if (!popover)
     {
-      popover = gtk_popover_new (image);
+      popover = gtk_popover_new ();
+      gtk_widget_set_parent (popover, image);
       g_object_set_data (G_OBJECT (image), "popover", popover);
 
       box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
index 872ac51fd7f0c0036dc9138091c58280dc290831..ac3cead041aed2ba1d6df2deaf6e37cf05176479 100644 (file)
@@ -125,7 +125,7 @@ int main (int argc, char **argv)
     GtkBuilder *builder = gtk_builder_new_from_string (menu_data, -1);
     menu_model = G_MENU_MODEL (gtk_builder_get_object (builder, "menu_model"));
 
-    menu = gtk_popover_menu_new_from_model (NULL, menu_model);
+    menu = gtk_popover_menu_new_from_model (menu_model);
 
   }
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (menubutton), menu);
index 9b87c41a3872ad66ce30ac3ce97a7039c623a3a7..31394c4ac302b2ba3d195dbb4d9a86b6986de0fd 100644 (file)
@@ -340,7 +340,8 @@ do_popup_menu (GtkWidget   *icon_list,
   if (!path)
     return;
 
-  menu = gtk_popover_new (icon_list);
+  menu = gtk_popover_new ();
+  gtk_widget_set_parent (menu, icon_list);
 
   data = g_new0 (ItemData, 1);
   data->icon_list = icon_view;
index 5eae2c0241f16da29d1ec0117bbbffe9cae3092f..310280fec6dae6f89ba11b594bcc0b1173bb43d6 100644 (file)
@@ -115,7 +115,7 @@ main (int argc, char *argv[])
   gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), model);
   popover = GTK_WIDGET (gtk_menu_button_get_popover (GTK_MENU_BUTTON (button)));
 
-  popover1 = gtk_popover_menu_new_from_model_full (NULL, model, GTK_POPOVER_MENU_NESTED);
+  popover1 = gtk_popover_menu_new_from_model_full (model, GTK_POPOVER_MENU_NESTED);
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (button1), popover1);
 
   g_object_unref (builder);
index eb3fe224e08496eae32131e36d47b11daba66ffd..2e81b31683904c20f3186b1147ab77e637116da6 100644 (file)
@@ -213,7 +213,7 @@ scrollable_policy (void)
   gtk_widget_show (window);
 
   /* Popover */
-  popover = gtk_popover_new (NULL);
+  popover = gtk_popover_new ();
 
   widget = gtk_menu_button_new ();
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (widget), popover);
index 9b48d6e5a2b5bb34ab867cc4af1d35ebaa860d1b..86ae731f2068347808a911a25bef1fab5e6e73fc 100644 (file)
@@ -420,7 +420,7 @@ main (int argc, char *argv[])
   gtk_widget_set_halign (button, GTK_ALIGN_CENTER);
   gtk_menu_button_set_label (GTK_MENU_BUTTON (button), "Custom tooltip I");
   gtk_container_add (GTK_CONTAINER (box), button);
-  popover = gtk_popover_new (NULL);
+  popover = gtk_popover_new ();
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), popover);
   box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
   gtk_container_add (GTK_CONTAINER (popover), box2);
index 96c870ba52e96818253dafbae50fab4c0ce4dbd9..b2895fadbefb6e4c108979721f3fdd90e4580c7b 100644 (file)
@@ -31,13 +31,13 @@ test_popover_parent (void)
 
   w = gtk_entry_new ();
 
-  p = gtk_popover_new (NULL);
+  p = gtk_popover_new ();
   a = gtk_widget_get_accessible (p);
 
   g_assert (a != NULL);
   g_assert (atk_object_get_parent (a) == NULL);
 
-  gtk_popover_set_relative_to (GTK_POPOVER (p), w);
+  gtk_widget_set_parent (p, w);
 
   g_assert (atk_object_get_parent (a) != NULL);
 
index 1ddeeea34805d4388e30963c175b2179f01f4cd1..4b5dcc268e7f43a74451d740bead4521bfd4c7f9 100644 (file)
@@ -2181,7 +2181,7 @@ test_expose_object (void)
     "  </object>"
     "</interface>";
 
-  menu = gtk_popover_new (NULL);
+  menu = gtk_popover_new ();
   builder = gtk_builder_new ();
   gtk_builder_expose_object (builder, "builder", G_OBJECT (builder));
   gtk_builder_expose_object (builder, "external_menu", G_OBJECT (menu));
index 7c3070819805ddb45a575c77def74b3c2385afcb..cb7813f5c32b805ba79f8330f782fd58fb754b74 100644 (file)
@@ -43,7 +43,7 @@ test_show_popover (void)
 
   window = gtk_window_new ();
   button = gtk_menu_button_new ();
-  popover = gtk_popover_new (NULL);
+  popover = gtk_popover_new ();
   gtk_container_add (GTK_CONTAINER (popover), gtk_label_new ("Nu?"));
   gtk_menu_button_set_popover (GTK_MENU_BUTTON (button), popover);
   gtk_container_add (GTK_CONTAINER (window), button);